document.getElementById("sendData").addEventListener("click", async () => {
  try {
    // 注入脚本，获取页面中 id="app" 的 HTML 内容
    const [result] = await chrome.scripting.executeScript({
      target: {
        tabId: (
          await chrome.tabs.query({ active: true, currentWindow: true })
        )[0].id,
      },
      func: () => {
        // 获得body的HTML内容
        const bodyElement = document.getElementsByTagName("body")[0];
        return bodyElement ? bodyElement.outerHTML : null;
      },
    });

    // 显示结果
    const responseDiv = document.getElementById("response");
    responseDiv.innerHTML = "等待响应..."; // 初始化提示
    responseDiv.innerHTML = "";
    const converter = new showdown.Converter();

    try {
      console.log("发送 HTML 数据:", result);
      const streamResponse = await fetch("http://127.0.0.1:8111/v1/navi", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          html: result.result,
          stream: true,
        }),
      });

      const reader = streamResponse.body.getReader();
      const decoder = new TextDecoder();
      const tmpDiv = document.getElementById("temp-container");

      while (true) {
        const { done, value } = await reader.read();
        if (done) break;

        // 解码流式数据
        const chunk = decoder.decode(value, { stream: true });

        // 解析 JSON 数据
        // 处理 SSE 格式的数据
        chunk.split("\n").forEach((line) => {
          if (line.startsWith("data: ")) {
            try {
              // 提取 JSON 部分
              const jsonString = line.slice(6).trim(); // 去掉 "data: " 前缀
              const jsonData = JSON.parse(jsonString);

              // 根据 event 类型处理数据
              if (jsonData.event === "workflow_started") {
                // responseDiv.innerHTML += `<p>工作流已启动，任务 ID: ${jsonData.task_id}</p>`;
                console.log("工作流已启动，任务 ID:", jsonData.task_id);
              } else if (
                jsonData.event === "text_chunk" &&
                jsonData.data &&
                jsonData.data.text
              ) {
                tmpDiv.innerHTML += jsonData.data.text;
              }
            } catch (error) {
              console.error("解析 JSON 失败:", error);
            }
          }
        });
        responseDiv.innerHTML = converter.makeHtml(tmpDiv.innerHTML);
        // 滚动到底部
        responseDiv.scrollTop = responseDiv.scrollHeight;
      }
    } catch (error) {
      responseDiv.innerHTML = "错误: " + error.message;
    }
  } catch (error) {
    console.error("获取 HTML 失败:", error);
    document.getElementById("response").innerHTML = "错误: " + error.message;
  }
});
